package nave.model;

import nave.Point;

public abstract class GameObject {

	/*
	 * Attributes
	 */
	final protected int id;
	protected Point position;
	protected Point drawPoint;

	/*
	 * Constructors
	 */
	public GameObject(int id) {
		this.id = id;
		position = new Point();
		drawPoint = new Point();

		placeOnStage();
	}
	
	/*
	 * Getters and setters
	 */
	public int getId() {
		return this.id;
	}
	public Point getPosition() {
		return this.position;
	}
	public Point getDrawPositon() {
		return drawPoint;
	}

	/*
	 * Public methods
	 */
	public abstract void update(float delta);
	
	public abstract void placeOnStage();
	
	@Override
	public int hashCode() {
		return this.id;
	}
	
	/*
	 * Private methods
	 */
}
